/*
 * 统计职工信息
 *
 * 题目链接：https://programming.pku.edu.cn/probset/c4b75386cfd8411991908475c4b91bc6/cc17c6cf36ef4d5db7342727101b1ba1/
 * 作者：lyazj <seeson@pku.edu.cn>
 *
 * 本题所需主要知识点：
 *   - 函数
 *   - 排序
 */

#include <assert.h>
#include <ctype.h>
#include <stdio.h>
#include <stdlib.h>

#define NAME_MAXLEN 127

// 使用结构体方便排序时整体交换
typedef struct {
  int id;
  char name[NAME_MAXLEN + 1];
} staff_t;
staff_t staff[10];

// 一种内存安全的输入方式（考试直接 scanf 即可）
void input_name(char name[NAME_MAXLEN + 1])
{
  char *p = name;
  while(p != name + NAME_MAXLEN + 1) {
    int ch = getc(stdin);
    if(ch == EOF) break;
    if(isspace(ch)) {
      if(p != name) {  // 尾后空白
        ungetc(ch, stdin);
        break;
      }
      continue;  // 前导空白
    }
    *p++ = ch;
  }
  assert(p != name + NAME_MAXLEN + 1);
  *p = 0;
}

// 1. 输入
void input()
{
  for(int i = 0; i < 10; ++i) {
    input_name(staff[i].name);
    scanf(" %d", &staff[i].id);
  }
}

int staff_cmp(const staff_t *a, const staff_t *b) { return a->id - b->id; }

// 2. 排序
void sort() { qsort(staff, 10, sizeof(staff_t), (int (*)(const void *, const void *))staff_cmp); }

// 3.1 输出排序结果
void output()
{
  for(int i = 0; i < 10; ++i) { printf("%s-%d\n", staff[i].name, staff[i].id); }
}

// 3.2 输出查询结果
void query(int id)
{
  int l = 0, r = 9;
  while(l <= r) {
    int m = (l + r) >> 1;
    if(staff[m].id == id) {
      printf("%s\n", staff[m].name);
      return;
    } else if(staff[m].id > id) {
      r = m - 1;
    } else {
      l = m + 1;
    }
  }
  printf("NOFOUND\n");
}

int main(void)
{
  input();
  sort();
  output();
  int n;
  scanf(" %d", &n);
  while(n--) {
    int id;
    scanf(" %d", &id);
    query(id);
  }
  return 0;
}
